<?php

class Clientes_Model_ClientesMapper
{
	protected $_dbTable;
	public function setDbTable($dbTable) {
		if (is_string ( $dbTable )) {
			$dbTable = new $dbTable ();
		}
		if (! $dbTable instanceof Zend_Db_Table_Abstract) {
			throw new Exception ( 'Invalid table data gateway provided' );
		}
		$this->_dbTable = $dbTable;
		return $this;
	}
	public function getDbTable() {
		if (null === $this->_dbTable) {
			$this->setDbTable ( 'Clientes_Model_DbTable_Clientes' );
		}
		return $this->_dbTable;
	}
	
	public function includeClientes(Clientes_Model_Clientes $registro) {
		$data = array (
				'id'=> $registro->getId(),
				'nome'=> $registro->getNome(),
				'nome_comp'=> $registro->getNome_comp(),
				'contato'=> $registro->getContato(),
				'email'=> $registro->getEmail(),
				'telefone'=> $registro->getTelefone(),
				'endereco'=> $registro->getEndereco(),
				'cep'=> $registro->getCep(),
				'bairro'=> $registro->getBairro(),
				'cidade'=> $registro->getCidade(),
				'estado'=> $registro->getEstado()
		);
		$this->getDbTable ()->insert ( $data );
	}
	
	public function listClientes() {
		$sql = $this->getDbTable ()->select ()->order ( "nome ASC" );
		$resultSet = $this->getDbTable ()->fetchAll ( $sql );
		$entries = array ();
		if ($resultSet->count () > 0) {
			foreach ( $resultSet as $row ) {
				$entries [] = $this->_fillClientes ( $row );
			}
		}
		return $entries;
	}
	
	public function editUsuario(Clientes_Model_Clientes $registro, $id = null) {
		$data = array (
				'id'=> $registro->getId(),
				'nome'=> $registro->getNome(),
				'nome_comp'=> $registro->getNome_comp(),
				'contato'=> $registro->getContato(),
				'email'=> $registro->getEmail(),
				'telefone'=> $registro->getTelefone(),
				'endereco'=> $registro->getEndereco(),
				'cep'=> $registro->getCep(),
				'bairro'=> $registro->getBairro(),
				'cidade'=> $registro->getCidade(),
				'estado'=> $registro->getEstado(),
				'id_vendedor'=> $registro->getId_vendedor(),
				'id_usuario'=> $registro->getId_usuario(),
				'anotacao'=> $registro->getAnotacao(),
				'desconto'=>$registro->getDesconto()
		);
		$this->getDbTable ()->update ( $data, array (
				'id = ?' => $id
		) );
	}
	
	public function deletar($id = NULL) {
		try {
			$result = $this->getDbTable ()->find ( $id );
			$this->getDbTable ()->delete ( array (
					'id = ?' => $id
			) );
		} catch ( Zend_Exception $e ) {
			echo $e;
		}
	}
	
	protected function _fillClientes( Zend_Db_Table_Row $row){
		$registro = new Clientes_Model_Clientes();
			
		$registro->setId ( $row->id )
		->setNome( $row->nome)
		->setNome_comp($row->nome_comp)
		->setContato($row->contato)
		->setEmail($row->email)
		->setTelefone($row->telefone)
		->setEndereco($row->endereco)
		->setAnotacao( $row->anotacao)
		->setCep( $row->cep)
		->setBairro( $row->bairro)
		->setCidade( $row->cidade)
		->setEstado( $row->estado)
		->setId_vendedor( $row->id_vendedor)
		->setId_usuario($row->id_usuario)
		->setDesconto($row->desconto);
	
		return $registro;
	}
	
	public function findpopule($id)
	{
		$result = $this->getDbTable()->find($id);
		if (0 == count($result)) {
			return;
		}
		$row = $result->current();
		return $data = array(
				'id'=> $row->id,
				'nome'=> $row->nome,
				'nome_comp'=> $row->nome_comp,
				'contato'=> $row->contato,
				'email'=>$row->email,
				'telefone'=> $row->telefone,
				'endereco'=> $row->endereco,
				'anotacao'=> $row->anotacao,
				'cep'=> $row->cep,
				'bairro'=> $row->bairro,
				'cidade'=> $row->cidade,
				'estado'=> $row->estado,
				'id_vendedor'=> $row->id_vendedor,
				'id_usuario'=>$row->id_usuario,
				'desconto'=>$row->desconto
		);
	}

}

